package com.mbc.service;


import com.mbc.dto.UserLoginDTO;
import com.mbc.dto.UserRealNameDTO;
import com.mbc.pojo.MbcUser;
import com.mbc.pojo.MbcUserInfo;
import com.mbc.vo.MbcUserInfoVO;
import com.mbc.vo.UserLoginVO;

import java.time.LocalDateTime;


/**
 * 用户服务
 *
 * @author suimeng
 * @date 2024/04/08
 */
public interface UserService {
    /**
     * 获取粉丝数量
     *
     * @param userId 用户 ID
     * @return int
     */
    int getFansCount(String userId);

    /**
     * 获取关注数量
     *
     * @param userId 用户 ID
     * @return int
     */
    int getConcernCount(String userId);

    /**
     * @param userId 用户 ID
     */
    boolean updateNicknames(String userId, String nickname);


    /**
     * 更新并添加手机号码
     *
     * @param userId      用户 ID
     * @param phoneNumber 电话号码
     * @return boolean
     */
    boolean updateandaddPhone(String userId, String phoneNumber);


    /**
     * 更新或添加真实姓名
     *
     * @param userId          用户 ID
     * @param userRealNameDTO 用户真实姓名 DTO
     * @return boolean
     */
    boolean updateOrAddRealName(String userId, UserRealNameDTO userRealNameDTO);

    /**
     * 更新或添加详细地址
     *
     * @param userId  用户 ID
     * @param address 加法器
     * @return boolean
     */
    boolean updateOrAddFullAddress(String userId, String address);

    /**
     * 更新或添加头像
     *
     * @param userId         用户 ID
     * @param profilePicture 个人资料图片
     * @return boolean
     */
    boolean updateOrAddHeadShot(String userId, String profilePicture);

    /**
     * 更新电子邮件
     *
     * @param userId 用户 ID
     * @param email  电子邮件
     * @return boolean
     */
    boolean updateEmail(String userId, String email);

    /**
     * 新增用户详细信息
     *
     * @param userId      用户 ID
     * @param mbcUserInfo MBC 用户信息
     * @return boolean
     */
    boolean insertUserInfo(String userId, MbcUserInfo mbcUserInfo);

    /**
     * 更新出生日期
     *
     * @param userId      用户 ID
     * @param dateOfBirth 出生日期
     * @return boolean
     */
    boolean updateDateOfBirth(String userId, String dateOfBirth);

    /**
     * 更新个人标签
     *
     * @param userId       用户 ID
     * @param personalTags 个人标签
     * @return boolean
     */
    boolean updatePersonalTags(String userId, String personalTags);

    /**
     * 更新或添加个人简介
     *
     * @param userId          用户 ID
     * @param personalProfile 个人简介
     * @return boolean
     */
    boolean updatePersonalProfile(String userId, String personalProfile);

    /**
     * 查询用户详细信息
     *
     * @param userId 用户 ID
     * @return {@link MbcUserInfoVO}
     */
    MbcUserInfoVO getByUserInfo(String userId);

    /**
     * WX 登录
     *
     * @param userLoginDTO 用户登录 DTO
     * @return {@link MbcUser}
     */
    UserLoginVO wxLogin(UserLoginDTO userLoginDTO);
}
